package com.example.data.permission.mp.interceptor;

import com.example.data.permission.mp.permission.DataPermission;
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.MappedStatement;

/**
 * Created by TD on 2021/7/27
 * 自定义数据权限处理器
 */
public interface MyDataPermissionHandler {
    /**
     * 处理权限数据SQL=》数据库查询数据权限,处理带 #{ } 语句
     *
     * @param originalSql    原始SQL
     * @param ms             MappedStatement
     * @param dataPermission DataPermission注解
     * @return 处理后的SQL
     */
    String getSqlSegment(String originalSql, MappedStatement ms,  StatementHandler statementHandler, DataPermission dataPermission);


    /**
     * 处理权限数据SQL=》根据用户信息过滤
     *
     * @param originalSql    原始SQL
     * @param dataPermission DataPermission注解
     * @return 包装后的SQL
     */
    String getSqlSegment(String originalSql, DataPermission dataPermission);
}
